home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MYUTIL / COMPTREE.D < prev    next >
Encoding:
Modula Definition  |  1991-02-01  |  2.3 KB  |  76 lines

  1. DEFINITION MODULE CompTree;
  2.  
  3. (*
  4.  * Wertet ID-Bäume des Compilers aus.
  5.  *)
  6.  
  7. (*$H+,Z+*)
  8.  
  9. FROM SYSTEM IMPORT ADDRESS;
  10. FROM Strings IMPORT String;
  11.  
  12. VAR Buffer: ADDRESS;            (* untere Grenze vom Tree *)
  13.  
  14. VAR TreeBase: ADDRESS;          (* A1-Register *)
  15.     DisplayStack: ADDRESS;      (* A6-Register *)
  16.     RelocationStack: ADDRESS;   (* RStkPtr     *)
  17.   (*
  18.    * Müssen von außen zugewiesen werden, 'DisplayStack' und 'RelocationStack'
  19.    * werden nur für 'ScanWholeTree' benötigt.
  20.    *)
  21.  
  22. TYPE PtrItem = LONGINT;
  23.  
  24. CONST NoItem = VAL (PtrItem, 0);
  25.  
  26. TYPE TreeProc = PROCEDURE ( REF (* name: *) ARRAY OF CHAR,
  27.                                 (* item: *) PtrItem );
  28.  
  29.      TreeType = (local, newscope, global, module, pervasive);
  30.      NewTreeProc = PROCEDURE ( TreeType ): BOOLEAN;
  31.  
  32. TYPE EntryType = (const, pointer, scope);
  33.      ItemEntry = RECORD
  34.                    name: String;
  35.                    CASE type: EntryType OF
  36.                      const  : constVal: LONGCARD |
  37.                      scope,
  38.                      pointer: ptrVal: PtrItem
  39.                    END;
  40.                  END;
  41.      ItemProc  = PROCEDURE ( REF (* entry: *) ItemEntry, (* more: *) BOOLEAN );
  42.  
  43. TYPE ItemFlags = SET OF [0..7];
  44.      ItemDesc  = RECORD
  45.                    flag: ItemFlags;
  46.                    kind: CARDINAL;
  47.                  END;
  48.  
  49. PROCEDURE ScanWholeTree (scanner: TreeProc; new: NewTreeProc);
  50.  
  51. PROCEDURE ScanLocalTree (scanner: TreeProc; tree: PtrItem);
  52.  
  53. PROCEDURE FindItemByName (REF name: ARRAY OF CHAR; VAR item: PtrItem);
  54.  
  55. PROCEDURE GetNameOfItem (item: PtrItem;
  56.                          VAR name: ARRAY OF CHAR; VAR found: BOOLEAN);
  57.  
  58. PROCEDURE GetItemDesc (item: PtrItem; VAR desc: ItemDesc): BOOLEAN;
  59. PROCEDURE Kind (REF desc: ItemDesc): String;
  60. PROCEDURE Flags (REF desc: ItemDesc): String;
  61.  
  62. PROCEDURE SystemType (REF desc: ItemDesc): BOOLEAN;
  63.   (* TRUE, wenn's ein bekannter Typ ist, der nicht tiefer beschrieben
  64.      werden braucht (z.B. CARDINAL) *)
  65.  
  66. PROCEDURE ScanItem (scanner: ItemProc; item: PtrItem);
  67.  
  68. PROCEDURE LoadDef (REF name: ARRAY OF CHAR);
  69.   (*
  70.    * Lädt und decodiert ein Def-Modul. Dabei wird Speicher alloziert
  71.    * und TreeBase entspr. gesetzt. Alter Speicher wird vorher freigegeben.
  72.    * Scannen mit 'ScanLocalTree (scanner, 0)'.
  73.    *)
  74.  
  75. END CompTree.
  76.